查看原文
其他

给开发者的9个安全建议:既能保护供应链安全,也不会拖慢开发进程

Whitesource 代码卫士 2022-04-06

 聚焦源代码安全,网罗国内外最新资讯!

编译:奇安信代码卫士


随着供应链攻击继续登上各大头条,软件开发团队意识到不能忽视包管理,因为其中隐藏的威胁是真实存在的。如下我们将介绍开发人员能够抵御供应链攻击的实践和工具。


开源依赖关系天生具有供应链风险


经由报管理器和注册表的开源组件是入侵企业供应链的绝佳途径。开发人员已经够忙碌了,没有人会有时间查看每个软件包中的每行代码,更何况程序包更新。

通常而言,项目一般都是使用最新版本的程序包,之后才逐渐落下。软件开发组织机构的 AppSec 策略必须考虑到,虽然使用开源组件拥有很多好处,但也存在风险。其中一种风险就是开源依赖关系中存在开源供应链风险。未能保护开源供应链的安全会带来诸多风险,如宕机、密币劫持、僵尸网络、数据泄露或和开源许可证以及数据丢失带来的法律风险。

开发人员需要记住的是,对于很多生态系统而言,仅安装程序包就能带来威胁。生态系统链如 NPM、PyPI 和 RubyGems 包含安装后hook。开发人员只要安装库,那么就会获得权限,访问任何内容以及和机器运行所依靠的账户有关的一切内容。如果安装的库中含有恶意代码,则可造成实质损失或再清理自身时感染其它库。


防御供应链威胁


虽然没有一劳永逸的解决方案,但开发人员可采取如下措施来防御供应链安全。

1、仅使用已验证的包来源


最常用的两种攻击向量是 typosquatting 和 brandjacking。

2、审计所使用的软件包的开源许可证

很多包注册表都提供既定包的许可证。记住,不同的发布可能具有不同的开源许可证。

3、离开已被弃用的软件包

遭弃用的软件包更可能遭恶意接管。如果你使用的软件未得到足够的关注,那么就避免使用它或者接管它。你也可以对计划集成到软件中的程序包进行社区评估。

4、不要使用新出现的软件包

如果程序包出现的时间不到30天,那么就等到社区的安全研究员证实其安全性之后再使用。

去年出现很多试图向多种注册表发布恶意包的情况。有了如上策略,则大多数事件可避免。

5、确保重要的和生产相关的CVE通知时安全警告工作流的一部分。

有时候,你的生产可能遭某严重漏洞影响。最好在出现安全警告时就警醒而不是等待安全事件的发生才手忙脚乱。

6、 如果你正在使用自动化工具更新依赖关系,则确保在自动安装更新前确保程序包是安全的。

7、使用分离的CI阶段

不要使用具有对 AWS、Docker 注册表等所有环境变量的单个 CI 管道。如果你正在使用相同的环境运行规范、构建容器、推送更新等,那就等于将你的环境、公司以及客户置于风险之中。

8、保护整个开发周期的安全始于开发人员。

阻止供应链风险的第一步是树立意识。教育团队,让他们知道搜素和下载软件包的行为不 OK。确保标准实践是在了解程序包的作者之前不要下载。

9、审计程序包时基于研究而非仅仅依靠 git 库描述。

要设计正在使用的开源项目,你将需要下载软件包并研究其内容以确保它是安全的。你不应该依赖于所使用的注册表信息,或者使用其它分析工具检测安全和质量问题。


不会拖慢开发的供应链安全


随着安全左移,开发人员越来越多地被要求检测和修复漏洞。

虽然老旧方法将安全置于开发进程末端,并拖慢了开发周期,但当前的 DevSecOps 趋势使开发人员在开发的最早期阶段,在安全方面站有一席之地。遗憾的是,开发人员并没有获得所需工具和实践方面的帮助,以共享安全所有权。

开发人员并不需要成为安全专家才能共享安全所有权,只需集成正确的自动化工具和实践就能对抗诸如供应链攻击的安全威胁,同时开发进程不会被拖慢。








推荐阅读
在线阅读版:《2021中国软件供应链安全分析报告》全文
用幼儿园所学拆解美国总统网络安全行政令(含软件供应链安全)
详细分析PHP源代码后门事件及其供应链安全启示




原文链接


https://www.whitesourcesoftware.com/resources/blog/10-supply-chain-security-tips/


题图:Pixabay License



本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。



奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的

产品线。

    觉得不错,就点个 “在看” 或 "” 吧~



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存